home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / prodpack.zip / DB4PPSRC.EXE / _DLLAY.PRG < prev    next >
Text File  |  1993-05-23  |  20KB  |  766 lines

  1. PROCEDURE _DLLay
  2. PARAMETERS pc_object, pc_type, pc_expr
  3. *---------------------------------------------------------------------
  4. * NAME
  5. *   _FXLay - LAYOUT:INVOKE menu program for screen designer
  6. *
  7. * DESCRIPTION
  8. * DEPENDENCIES
  9. *   Uses PUBLIC variables fxn_detail, fxl_key, and fxl_uniq
  10. *
  11. *---------------------------------------------------------------------
  12.   PRIVATE lc_nokey, lc_sav_brd, ll_cursor, ll_dbtrap, ;
  13.           ll_escape, ll_exact, ll_fields, ll_near, ll_noalias, ll_scoreb, ;
  14.           ll_status, ll_talk, ll_toggle, lc_alias, ln_csel, ll_badenv, ;
  15.           ln_mem, ll_high, lc_MAlais, lc_FrmMast, ll_trap, ll_clock
  16.  
  17.   *-----------------------
  18.   *-- Save the environment
  19.   *-----------------------
  20.   ll_talk = _TalkMode( .F. )            && Save current TALK mode.
  21.  
  22.   lc_CoHigh = _ColorChk( "H" )
  23.   lc_CoBox  = _ColorChk( "B" )
  24.   lc_CoMess = _ColorChk( "M" )
  25.  
  26.   lc_display = SET( "DISPLAY" )
  27.   ln_navrow = IIF( "43" $ lc_display, 41, IIF( "50" $ lc_display, 48, 23 ) )
  28.   SET CATALOG OFF
  29.   ll_clock = SET( "CLOCK" )
  30.   lc_sav_brd = SET( "BORDER" )          && Save current BORDER setting.
  31.   SET BORDER TO 
  32.   ll_cursor  = SET( "CURSOR" ) = "ON"
  33.   SET CURSOR OFF
  34.   ll_dbtrap  = SET( "DBTRAP" ) = "ON"   && Save current DBTRAP mode.
  35.   SET DBTRAP OFF
  36.   ll_escape  = SET( "ESCAPE" ) = "ON"   && Save the ESCAPE state
  37.   SET ESCAPE OFF                        && Force ESCAPE OFF so prgs can't be stopped
  38.   ll_exact   = SET( "EXACT" ) = "ON"
  39.   SET EXACT ON
  40.   ll_fields  = SET( "FIELDS" ) = "ON"
  41.   SET FIELDS OFF
  42.   ll_near    = SET( "NEAR" ) = "ON"
  43.   SET NEAR OFF
  44.   ll_scoreb  = SET( "SCOREBOARD" ) = "ON"
  45.   SET SCOREBOARD OFF
  46.   ll_trap = SET( "TRAP" ) = "ON"
  47.   SET TRAP OFF
  48.   ll_status  = SET( "STATUS" ) = "ON"
  49.   IF ll_status
  50.     SAVE SCREEN TO lc_status
  51.     SET STATUS OFF                     && Turn off busy STATUS in _fxlay
  52.     RESTORE SCREEN FROM lc_status
  53.     SET CLOCK ON                       && Show the clock in the designer
  54.   ENDIF
  55.  
  56.   *-------------------------------
  57.   *-- Setup the return value array
  58.   *-------------------------------
  59.   PUBLIC ARRAY DLLayout[ 11 ]
  60.   *-- RB_TYPE_1 - ( ) ~Button
  61.   DLLayout[ 1 ] = .T.
  62.   *-- RB_TYPE_2 - ( ) ~Edit field
  63.   DLLayout[ 2 ] = .F.
  64.   *-- RB_TYPE_3 - ( ) ~Radio buttons
  65.   DLLayout[ 3 ] = .F.
  66.   *-- RB_TYPE_4 - ( ) ~Check boxes
  67.   DLLayout[ 4 ] = .F.
  68.   *-- RB_TYPE_5 - ( ) Combo box - ~Drop down
  69.   DLLayout[ 5 ] = .F.
  70.   *-- RB_TYPE_6 - ( ) Combo box - Drop down lis~t
  71.   DLLayout[ 6 ] = .F.
  72.   *-- RB_TYPE_7 - ( ) Combo box - ~Simple
  73.   DLLayout[ 7 ] = .F.
  74.   *-- RB_TYPE_8 - ( ) ~List box
  75.   DLLayout[ 8 ] = .F.
  76.   *-- BT_OK -    Ok
  77.   DLLayout[ 9 ] = .T.
  78.   *-- BT_CANCEL -  Cancel
  79.   DLLayout[ 10 ] = .F.
  80.   *-- BT_HELP -   ~Help
  81.   DLLayout[ 11 ] = .F.
  82.  
  83.  
  84.   FXL_Cancel = .F.
  85.   FXL_NoChng = .T.
  86.   DO DLLayout
  87.  
  88.   IF .NOT. FXL_Cancel
  89.     n = 1
  90.     DO WHILE n <= 8
  91.       IF DLLayout[ n ]
  92.         EXIT
  93.       ENDIF
  94.       n = n + 1
  95.     ENDDO
  96.     DO CASE
  97.       CASE n = 1
  98.         DO _DLButton
  99.  
  100.       CASE n = 2
  101.         DO _DLEdit
  102.  
  103.       CASE n = 3
  104.         DO _DLRadio
  105.  
  106.       CASE n = 4
  107.         DO _DLCheck
  108.  
  109.       CASE n = 5
  110.         DO _DLCombo WITH "CS_"
  111.  
  112.       CASE n = 6
  113.         DO _DLCombo WITH "CD_"
  114.  
  115.       CASE n = 7
  116.         DO _DLCombo WITH "LB_"
  117.  
  118.       CASE n = 8
  119.         DO _DLCombo WITH "CL_"
  120.  
  121.     ENDCASE
  122.  
  123.   ENDIF
  124.  
  125.   *--------------------------
  126.   *-- Restore the environment
  127.   *--------------------------
  128.   RELEASE DLLayout
  129.   SET BORDER TO &lc_sav_brd.
  130.   IF ll_cursor
  131.     SET CURSOR ON
  132.   ENDIF
  133.   IF ll_dbtrap
  134.     SET DBTRAP ON
  135.   ENDIF
  136.   IF ll_exact
  137.     SET EXACT ON
  138.   ENDIF
  139.   IF ll_fields
  140.     SET FIELDS ON
  141.   ENDIF
  142.   IF ll_near
  143.     SET NEAR ON
  144.   ENDIF
  145.  
  146.   IF ll_status
  147.     SET STATUS ON
  148.     RESTORE SCREEN FROM lc_status
  149.     RELEASE SCREEN lc_status
  150.     SET CLOCK ON
  151.   ENDIF
  152.   IF ll_scoreb
  153.     SET SCOREBOARD ON
  154.   ENDIF
  155.   IF ll_trap
  156.     SET TRAP ON
  157.   ELSE
  158.     SET TRAP OFF
  159.   ENDIF
  160.   IF ll_escape
  161.     SET ESCAPE ON
  162.   ELSE
  163.     SET ESCAPE OFF
  164.   ENDIF
  165.   SET CATALOG ON
  166.   IF _TalkMode( ll_talk )
  167.   ENDIF
  168.  
  169. RETURN
  170. *-- EOP: _DLLay
  171.  
  172.  
  173. PROCEDURE _DLButton
  174. *----------------------------------------------------------------------------
  175. * NAME
  176. *   _DLButton - 
  177. *
  178. * DESCRIPTION
  179. *
  180. *----------------------------------------------------------------------------
  181.   PUBLIC ARRAY DLBUTTON[ 7 ]
  182.     *-- CD_COMM_1 - XXXXXX [v]
  183.     DLBUTTON[ 1 ]    = [      ] + SPACE( 4 )
  184.     *-- RB_FLAG_1 - ( ) ~Normal
  185.     DLBUTTON[ 2 ]    = .T.
  186.     *-- RB_FLAG_2 - ( ) ~Default
  187.     DLBUTTON[ 3 ]    = .F.
  188.     *-- EF_TEXT_1 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  189.     DLBUTTON[ 4 ]    = SPACE( 36 )
  190.     *-- BT_OK -    Ok
  191.     DLBUTTON[ 5 ]    = .T.
  192.     *-- BT_CANCEL -  Cancel
  193.     DLBUTTON[ 6 ]    = .F.
  194.     *-- BT_HELP -   ~Help
  195.     DLBUTTON[ 7 ]    = .F.
  196.  
  197.   *--------------------------------------------------------------
  198.   *-- FXL_Cancel is set to .T. is the user Cancels the dialog box
  199.   *--------------------------------------------------------------
  200.   FXL_Cancel = .F.
  201.  
  202.   *--------------------------------------------------------------
  203.   *-- FXL_NoChng lets the dialog box know that the values in the
  204.   *-- array are not different from the SCR file defaults.  This
  205.   *-- will allow the dialog box to use the .WIN file for a faster
  206.   *-- startup.
  207.   *--------------------------------------------------------------
  208.   FXL_NoChng = .T.
  209.  
  210.   DO DLButton
  211.  
  212.   IF .NOT. FXL_Cancel
  213.     KEYBOARD [{Alt-F}I] + [N] CLEAR
  214.     KEYBOARD "BT_" + TRIM( dlbutton[1] ) + CHR(13)
  215.     KEYBOARD [T] + [{Home}{Ctrl-Y}]
  216.     IF .NOT. LEFT( dlbutton[4], 1 ) $ (['"]+'[')
  217.       DLButton[4] = Delimit( TRIM( DLButton[4] ) )
  218.     ENDIF
  219.     KEYBOARD &dlbutton[4] + CHR(13)
  220.       
  221.     KEYBOARD [E]
  222.     IF dlbutton[3]
  223.       KEYBOARD [D]
  224.       KEYBOARD '"DEFAULT"' + CHR(13)
  225.     ENDIF
  226.     KEYBOARD [C]
  227.     KEYBOARD [{Ctrl-End}]
  228.     KEYBOARD [{Ctrl-End}]
  229.   ENDIF
  230.  
  231.   RELEASE DLButton
  232.  
  233.  
  234. RETURN
  235. *-- EOP: _DLButton
  236.  
  237.  
  238. FUNCTION DLButtCD
  239.   IF TYPE( "aClkObj[1,1]" ) = "N"
  240.     IF ISBLANK( EF_TEXT_1 )
  241.       nLenEf = LEN( ef_text_1 )
  242.       DO CASE
  243.         CASE CD_COMM_1 = "OK"
  244.           ef_text_1 = LEFT( "'   Ok   '" + SPACE( nLenEf ), nLenEf )
  245.         CASE CD_COMM_1 = "CANCEL"
  246.           ef_text_1 = LEFT( "' Cancel '" + SPACE( nLenEf ), nLenEf )
  247.         CASE CD_COMM_1 = "HELP"
  248.           ef_text_1 = LEFT( "'  Help  '" + SPACE( nLenEf ), nLenEf )
  249.       ENDCASE
  250.       DO Tedit WITH WM_PAINT, EN_KILLFOC, 20
  251.     ENDIF
  252.   ENDIF
  253. RETURN .T.
  254. *-- EOF: DLButtCd
  255.  
  256.  
  257. PROCEDURE _DLEdit
  258. *----------------------------------------------------------------------------
  259. * NAME
  260. *   _DLEdit - 
  261. *
  262. * DESCRIPTION
  263. *
  264. *----------------------------------------------------------------------------
  265.   PUBLIC ARRAY DLEDIT[ 10 ]
  266.     *-- EF_NAME_1 - XXXX
  267.     DLEDIT[ 1 ]      = SPACE( 4 )
  268.     *-- EF_CAPT_1 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  269.     DLEDIT[ 2 ]      = SPACE( 34 )
  270.     *-- RB_TYPE_1 - ( ) ~Text
  271.     DLEDIT[ 3 ]      = .T.
  272.     *-- RB_TYPE_2 - ( ) ~Numeric
  273.     DLEDIT[ 4 ]      = .F.
  274.     *-- RB_TYPE_3 - ( ) ~Date
  275.     DLEDIT[ 5 ]      = .F.
  276.     *-- CK_CASE_1 - [ ] ~Upper case
  277.     DLEDIT[ 6 ]      = .F.
  278.     *-- EF_FLEN_1 - 99
  279.     DLEDIT[ 7 ]      = 8
  280.     *-- BT_OK -    Ok
  281.     DLEDIT[ 8 ]      = .T.
  282.     *-- BT_CANCEL -  Cancel
  283.     DLEDIT[ 9 ]      = .F.
  284.     *-- BT_HELP -   ~Help
  285.     DLEDIT[ 10 ]     = .F.
  286.  
  287.   FXL_Cancel = .F.
  288.   FXL_NoChng = .T.
  289.  
  290.   DO DLEdit
  291.  
  292.   IF .NOT. FXL_Cancel
  293.     CLEAR TYPEAHEAD
  294.     KEYBOARD [{DnArrow}]
  295.     KEYBOARD [{Alt-F}I] + [N]
  296.     KEYBOARD "EF_" + TRIM( DLEdit[1] ) + "_1" + CHR( 13 )
  297.     DO CASE
  298.       CASE DLEdit[3]                    && Text
  299.         IF DLEdit[6]                    && Upper case
  300.           KEYBOARD [P] + [U]
  301.           KEYBOARD [{Ctrl-End}]
  302.         ENDIF
  303.         KEYBOARD [T]
  304.         KEYBOARD [{Home}{Ctrl-Y}] + REPLICATE("X",DLEdit[7] ) + CHR(13)
  305.         KEYBOARD [{Ctrl-End}]
  306.       CASE DLEdit[4]                    && Numeric
  307.         KEYBOARD [V]
  308.         KEYBOARD [T]
  309.         KEYBOARD [{Home}{Ctrl-Y}] + REPLICATE("9",DLEdit[7] ) + CHR(13)
  310.         KEYBOARD [{Ctrl-End}]
  311.       CASE DLEdit[5]                    && Date
  312.         KEYBOARD [V]
  313.         KEYBOARD CHR(13) + CHR(13)
  314.         KEYBOARD [{Ctrl-End}]
  315.     ENDCASE
  316.     KEYBOARD [{LeftArrow}{UpArrow}]
  317.     IF .NOT. ISBLANK( DLEdit[2] )       && Caption
  318.       KEYBOARD [{F10}]
  319.       KEYBOARD [{Alt-F}I] + [N]
  320.       KEYBOARD "EF_" + TRIM( DLEdit[1] ) + "_0" + CHR( 13 )
  321.       KEYBOARD [T] + [{Home}{Ctrl-Y}]
  322.       KEYBOARD TRIM( DLEdit[2] ) + CHR( 13 )
  323.       KEYBOARD [{Ctrl-End}]
  324.     ENDIF
  325.   ENDIF  
  326.  
  327.   RELEASE DLEdit
  328.  
  329. RETURN
  330. *-- EOP: _DLEdit
  331.  
  332.  
  333. PROCEDURE _DLRadio
  334. *----------------------------------------------------------------------------
  335. * NAME
  336. *   _DLRadio - 
  337. *
  338. * DESCRIPTION
  339. *
  340. *----------------------------------------------------------------------------
  341.   PUBLIC ARRAY DLRADIO[ 23 ]
  342.   *-- EF_NAME_1 - XXXX
  343.   DLRADIO[ 1 ]     = SPACE( 4 )
  344.   *-- EF_GRP_1 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  345.   DLRADIO[ 2 ]     = SPACE( 34 )
  346.   *-- RB_DEF_1 - ( )
  347.   DLRADIO[ 3 ]     = .T.
  348.   *-- RB_DEF_2 - ( )
  349.   DLRADIO[ 4 ]     = .F.
  350.   *-- RB_DEF_3 - ( )
  351.   DLRADIO[ 5 ]     = .F.
  352.   *-- RB_DEF_4 - ( )
  353.   DLRADIO[ 6 ]     = .F.
  354.   *-- RB_DEF_5 - ( )
  355.   DLRADIO[ 7 ]     = .F.
  356.   *-- RB_DEF_6 - ( )
  357.   DLRADIO[ 8 ]     = .F.
  358.   *-- RB_DEF_7 - ( )
  359.   DLRADIO[ 9 ]     = .F.
  360.   *-- RB_DEF_8 - ( )
  361.   DLRADIO[ 10 ]    = .F.
  362.   *-- RB_DEF_9 - ( )
  363.   DLRADIO[ 11 ]    = .F.
  364.   *-- EF_LAB_1 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  365.   DLRADIO[ 12 ]    = SPACE( 38 )
  366.   *-- EF_LAB_2 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  367.   DLRADIO[ 13 ]    = SPACE( 38 )
  368.   *-- EF_LAB_3 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  369.   DLRADIO[ 14 ]    = SPACE( 38 )
  370.   *-- EF_LAB_4 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  371.   DLRADIO[ 15 ]    = SPACE( 38 )
  372.   *-- EF_LAB_5 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  373.   DLRADIO[ 16 ]    = SPACE( 38 )
  374.   *-- EF_LAB_6 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  375.   DLRADIO[ 17 ]    = SPACE( 38 )
  376.   *-- EF_LAB_7 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  377.   DLRADIO[ 18 ]    = SPACE( 38 )
  378.   *-- EF_LAB_8 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  379.   DLRADIO[ 19 ]    = SPACE( 38 )
  380.   *-- EF_LAB_9 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  381.   DLRADIO[ 20 ]    = SPACE( 38 )
  382.   *-- BT_OK -    Ok
  383.   DLRADIO[ 21 ]    = .T.
  384.   *-- BT_CANCEL -  Cancel
  385.   DLRADIO[ 22 ]    = .F.
  386.   *-- BT_HELP -   ~Help
  387.   DLRADIO[ 23 ]    = .F.
  388.  
  389.   FXL_Cancel = .F.
  390.   FXL_NoChng = .T.
  391.   DO DLRadio
  392.   IF .NOT. FXL_Cancel .AND. .NOT. ISBLANK( DLRadio[10] )
  393.     CLEAR TYPEAHEAD
  394.     IF .NOT. ISBLANK( DLRadio[2] )
  395.       KEYBOARD [{Alt-F}I] + [N]
  396.       KEYBOARD "RB_" + TRIM( DLRadio[1] ) + "_0" + CHR( 13 )
  397.       KEYBOARD [T] + [{Home}{Ctrl-Y}]
  398.       KEYBOARD TRIM( DLRadio[2] ) + CHR( 13 )
  399.       KEYBOARD [{Ctrl-End}]
  400.       KEYBOARD [{LeftArrow}{DnArrow}]
  401.     ENDIF
  402.  
  403.     nFld = 12
  404.     DO WHILE nFld <= 20
  405.       IF .NOT. ISBLANK( DLRadio[nFld] )
  406.         KEYBOARD [{Alt-F}I] + [N]
  407.         KEYBOARD "RB_" + TRIM( DLRadio[1] ) + "_" +;
  408.                  STR( nFld - 11, 1 ) + CHR(13)
  409.         KEYBOARD [V] + CHR(13)
  410.         KEYBOARD [T] + [{Home}{Ctrl-Y}]
  411.         KEYBOARD "( ) " + TRIM( DLRadio[nFld] ) + CHR(13)
  412.         IF DLRadio[ nFld - 9 ]
  413.           KEYBOARD [E] + [D] + ".T." + CHR(13)
  414.           KEYBOARD [{Ctrl-End}]
  415.         ENDIF
  416.         KEYBOARD [{Ctrl-End}]
  417.         KEYBOARD [{LeftArrow}{DnArrow}]
  418.       ELSE
  419.         EXIT
  420.       ENDIF
  421.       nFld = nFld + 1
  422.     ENDDO
  423.   ENDIF  
  424.  
  425.   RELEASE DLRadio
  426.  
  427. RETURN
  428. *-- EOP: _DLRadio
  429.  
  430.  
  431. PROCEDURE _DLCheck
  432. *----------------------------------------------------------------------------
  433. * NAME
  434. *   _DLCheck - 
  435. *
  436. * DESCRIPTION
  437. *
  438. *----------------------------------------------------------------------------
  439.   PUBLIC ARRAY DLCHECK[ 23 ]
  440.   *-- EF_NAME_1 - XXXX
  441.   DLCHECK[ 1 ]     = SPACE( 4 )
  442.   *-- EF_GRP_1 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  443.   DLCHECK[ 2 ]     = SPACE( 34 )
  444.   *-- CK_DEF_1 - [ ]
  445.   DLCHECK[ 3 ]     = .F.
  446.   *-- CK_DEF_2 - [ ]
  447.   DLCHECK[ 4 ]     = .F.
  448.   *-- CK_DEF_3 - [ ]
  449.   DLCHECK[ 5 ]     = .F.
  450.   *-- CK_DEF_4 - [ ]
  451.   DLCHECK[ 6 ]     = .F.
  452.   *-- CK_DEF_5 - [ ]
  453.   DLCHECK[ 7 ]     = .F.
  454.   *-- CK_DEF_6 - [ ]
  455.   DLCHECK[ 8 ]     = .F.
  456.   *-- CK_DEF_7 - [ ]
  457.   DLCHECK[ 9 ]     = .F.
  458.   *-- CK_DEF_8 - [ ]
  459.   DLCHECK[ 10 ]    = .F.
  460.   *-- CK_DEF_9 - [ ]
  461.   DLCHECK[ 11 ]    = .F.
  462.  
  463.   *-- EF_LAB_1 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  464.   DLCHECK[ 12 ]    = SPACE( 38 )
  465.   *-- EF_LAB_2 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  466.   DLCHECK[ 13 ]    = SPACE( 38 )
  467.   *-- EF_LAB_3 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  468.   DLCHECK[ 14 ]    = SPACE( 38 )
  469.   *-- EF_LAB_4 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  470.   DLCHECK[ 15 ]    = SPACE( 38 )
  471.   *-- EF_LAB_5 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  472.   DLCHECK[ 16 ]    = SPACE( 38 )
  473.   *-- EF_LAB_6 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  474.   DLCHECK[ 17 ]    = SPACE( 38 )
  475.   *-- EF_LAB_7 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  476.   DLCHECK[ 18 ]    = SPACE( 38 )
  477.   *-- EF_LAB_8 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  478.   DLCHECK[ 19 ]    = SPACE( 38 )
  479.   *-- EF_LAB_9 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  480.   DLCHECK[ 20 ]    = SPACE( 38 )
  481.   *-- BT_OK -    Ok
  482.   DLCHECK[ 21 ]    = .T.
  483.   *-- BT_CANCEL -  Cancel
  484.   DLCHECK[ 22 ]    = .F.
  485.   *-- BT_HELP -   ~Help
  486.   DLCHECK[ 23 ]    = .F.
  487.  
  488.   FXL_Cancel = .F.
  489.   FXL_NoChng = .T.
  490.   DO DLCheck
  491.   IF .NOT. FXL_Cancel .AND. .NOT. ISBLANK( DLCheck[10] )
  492.     CLEAR TYPEAHEAD
  493.     IF .NOT. ISBLANK( DLCheck[2] )
  494.       KEYBOARD [{Alt-F}I] + [N]
  495.       KEYBOARD "CK_" + TRIM( DLCheck[1] ) + "_0" + CHR( 13 )
  496.       KEYBOARD [T] + [{Home}{Ctrl-Y}]
  497.       KEYBOARD TRIM( DLCheck[2] ) + CHR( 13 )
  498.       KEYBOARD [{Ctrl-End}]
  499.       KEYBOARD [{LeftArrow}{DnArrow}]
  500.     ENDIF
  501.  
  502.     nFld = 12
  503.     DO WHILE nFld <= 20
  504.       IF .NOT. ISBLANK( DLCheck[nFld] )
  505.         KEYBOARD [{Alt-F}I] + [N]
  506.         KEYBOARD "CK_" + TRIM( DLCheck[1] ) + "_" +;
  507.                  STR( nFld - 11, 1 ) + CHR(13)
  508.         KEYBOARD [V] + CHR(13)
  509.         KEYBOARD [T] + [{Home}{Ctrl-Y}]
  510.         KEYBOARD "[ ] " + TRIM( DLCheck[nFld] ) + CHR(13)
  511.         IF DLCheck[ nFld - 9 ]
  512.           KEYBOARD [E] + [D] + ".T." + CHR(13)
  513.           KEYBOARD [{Ctrl-End}]
  514.         ENDIF
  515.         KEYBOARD [{Ctrl-End}]
  516.         KEYBOARD [{LeftArrow}{DnArrow}]
  517.       ELSE
  518.         EXIT
  519.       ENDIF
  520.       nFld = nFld + 1
  521.     ENDDO
  522.   ENDIF  
  523.  
  524.   RELEASE DLCheck
  525.  
  526. RETURN
  527. *-- EOP: _DLCheck
  528.  
  529.  
  530. PROCEDURE _DLCombo
  531. PARAMETERS pcClass
  532. *----------------------------------------------------------------------------
  533. * NAME
  534. *   _DLCombo - 
  535. *
  536. * DESCRIPTION
  537. *
  538. * PARAMETERS
  539. *   pcClass = 
  540. *
  541. *----------------------------------------------------------------------------
  542.   PUBLIC ARRAY DLCOMBO[ 16 ]
  543.     *-- EF_FLD_1 - XXXX
  544.     DLCOMBO[ 1 ]     = SPACE( 4 )
  545.  
  546.     *-- EF_LAB_1 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  547.     DLCOMBO[ 2 ]     = SPACE( 38 )
  548.  
  549.     *-- EF_DDH_1 - 99
  550.     DLCOMBO[ 3 ]     = 6
  551.  
  552.     *-- EF_DDW_1 - 99
  553.     DLCOMBO[ 4 ]     = 10
  554.  
  555.     *-- CL_TYPE_1 - XXXXXXXXXXXXXXXXXX [v]
  556.     DLCOMBO[ 5 ]     = 'Specified choices' + SPACE( 5 )
  557.  
  558.     *-- EF_POS_1 - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  559.     DLCOMBO[ 6 ]     = SPACE( 34 )
  560.  
  561.     *-- EF_ICP_1 - XXXXXXXXXXXXXXXXXXXXXXXXX
  562.     DLCOMBO[ 7 ]     = SPACE( 25 )
  563.  
  564.     *-- EF_ICP_2 - XXXXXXXXXXXXXXXXXXXXXXXXX
  565.     DLCOMBO[ 8 ]     = SPACE( 25 )
  566.  
  567.     *-- EF_ICP_3 - XXXXXXXXXXXXXXXXXXXXXXXXX
  568.     DLCOMBO[ 9 ]     = SPACE( 25 )
  569.  
  570.     *-- EF_ICP_4 - XXXXXXXXXXXXXXXXXXXXXXXXX
  571.     DLCOMBO[ 10 ]    = SPACE( 25 )
  572.  
  573.     *-- EF_ICP_5 - XXXXXXXXXXXXXXXXXXXXXXXXX
  574.     DLCOMBO[ 11 ]    = SPACE( 25 )
  575.  
  576.     *-- EF_ICP_6 - XXXXXXXXXXXXXXXXXXXXXXXXX
  577.     DLCOMBO[ 12 ]    = SPACE( 25 )
  578.  
  579.     *-- EF_ICP_7 - XXXXXXXXXXXXXXXXXXXXXXXXX
  580.     DLCOMBO[ 13 ]    = SPACE( 25 )
  581.  
  582.     *-- BT_OK -    Ok
  583.     DLCOMBO[ 14 ]    = .T.
  584.  
  585.     *-- BT_CANCEL -  Cancel
  586.     DLCOMBO[ 15 ]    = .F.
  587.  
  588.     *-- BT_HELP -   Help
  589.     DLCOMBO[ 16 ]    = .F.
  590.  
  591.   FXL_Cancel = .F.
  592.   FXL_NoChng = .T.
  593.   DO CASE
  594.     CASE pcClass = "CD_"
  595.       DBW_LIST = "Add - Combo Box: Drop-Down"
  596.     CASE pcClass = "CL_"
  597.       DBW_LIST = "Add - List Box: Drop-Down"
  598.     CASE pcClass = "CS_"
  599.       DBW_LIST = "Add - Combo Box: Simple"
  600.     CASE pcClass = "LB_"
  601.       DBW_LIST = "Add - List Box"
  602.   ENDCASE
  603.   DO DLCOMBO
  604.   IF .NOT. FXL_Cancel                   && The user clicked on OK
  605.     CLEAR TYPEAHEAD
  606.     IF .NOT. ISBLANK( DLCombo[ 2 ] )    && Group Label
  607.       KEYBOARD [{Alt-F}I] + [N]
  608.       KEYBOARD pcClass + TRIM( DLCombo[1] ) + "_0" + CHR( 13 )
  609.       KEYBOARD [T] + [{Home}{Ctrl-Y}]
  610.       KEYBOARD TRIM( DLCombo[2] ) + CHR( 13 )
  611.       KEYBOARD [{Ctrl-End}]
  612.       KEYBOARD [{LeftArrow}{DnArrow}]
  613.     ENDIF
  614.  
  615.     KEYBOARD [{Alt-F}I] + [N]
  616.     KEYBOARD pcClass + TRIM( DLCombo[1] ) + "_1" + CHR( 13 )
  617.     KEYBOARD [T] + [{Home}{Ctrl-Y}]
  618.     KEYBOARD REPLICATE( "X", DLCombo[4] ) + CHR(13)
  619.     DO CASE
  620.       CASE pcClass = "CD_"
  621.         KEYBOARD [T] + " [v]" + CHR(13)
  622.       CASE pcClass = "CL_"
  623.         KEYBOARD [T] + " [v]" + CHR(13)
  624.       CASE pcClass = "CS_"
  625.       CASE pcClass = "LB_"
  626.     ENDCASE
  627.  
  628.     KEYBOARD [P] + [M]
  629.  
  630.     IF DLCombo[ 5 ] <> "Specified choices"
  631.       KEYBOARD TRIM(DLCombo[6]) + CHR(13) + [{Ctrl-End}]
  632.     ELSE
  633.       nChoice = 7
  634.       DO WHILE nChoice <= 13
  635.         IF .NOT. ISBLANK( DLCombo[ nChoice ] )
  636.           KEYBOARD TRIM( DLCombo[ nChoice ] ) + ","
  637.         ELSE
  638.           KEYBOARD [{BackSpace}] + CHR(13) + [{Ctrl-End}]
  639.           EXIT
  640.         ENDIF
  641.         nChoice = nChoice + 1
  642.       ENDDO
  643.       IF nChoice = 14
  644.         KEYBOARD [{BackSpace}] + CHR(13) + [{Ctrl-End}]
  645.       ENDIF
  646.     ENDIF
  647.  
  648.     KEYBOARD [{Ctrl-End}]
  649.  
  650.     *-- Start box drawing
  651.     KEYBOARD [{LeftArrow}{DnArrow}]
  652.  
  653.     KEYBOARD [{Alt-L}BD] + CHR(13)
  654.  
  655.     n = 1
  656.     DO WHILE n <= DLCombo[3]
  657.       KEYBOARD [{DnArrow}]
  658.       n = n + 1
  659.     ENDDO
  660.     KEYBOARD [{DnArrow}]
  661.  
  662.     n = 1
  663.     DO WHILE n <= DLCombo[4]
  664.       KEYBOARD [{RightArrow}]
  665.       n = n + 1
  666.     ENDDO
  667.     KEYBOARD [{RightArrow}]
  668.     KEYBOARD CHR(13)
  669.  
  670.     n = 1
  671.     DO WHILE n <= DLCombo[4]
  672.       KEYBOARD [{LeftArrow}]
  673.       n = n + 1
  674.     ENDDO
  675.     KEYBOARD [{LeftArrow}]
  676.  
  677.  
  678.     n = 1
  679.     DO WHILE n <= DLCombo[3]
  680.       KEYBOARD [{UpArrow}]
  681.       n = n + 1
  682.     ENDDO
  683.     KEYBOARD [{UpArrow}]
  684.  
  685.     KEYBOARD [{F6}] + CHR(13)
  686.     KEYBOARD [{F7}{UpArrow}{RightArrow}] + CHR(13)
  687.  
  688.   ENDIF
  689.  
  690.   RELEASE DLCombo
  691. RETURN
  692. *-- EOP: _DLCombo WITH pnListType
  693.  
  694.  
  695. FUNCTION DLCRb
  696. *---------------------------------------------------------------------
  697. * NAME
  698. *   DBCRb - Validation routines for list choices
  699. *---------------------------------------------------------------------
  700.   PRIVATE cVarName
  701.  
  702.   IF TYPE( "aClkObj[1,1]" ) = "N"
  703.  
  704.     cVarName = IIF( TYPE( "pcClass" ) = "C", pcClass, "" )
  705.     cVarName = cVarName + TRIM( EF_FLD_1 ) + "_1"
  706.  
  707.     DO CASE
  708.       CASE CL_TYPE_1 = "Files like"
  709.         IF pcClass <> "LB_"
  710.           EF_POS_1 = LEFT( "FILES LIKE {" + cVarName + "}" + SPACE(34), 34 )
  711.         ELSE
  712.           EF_POS_1 = LEFT( "FILES LIKE *.*" + SPACE(34), 34 )
  713.         ENDIF
  714.  
  715.       CASE CL_TYPE_1 = "Do program"
  716.         EF_POS_1 = LEFT( "DO " + SPACE(34), 34 )
  717.  
  718.       CASE CL_TYPE_1 = "Specified choices"
  719.         EF_POS_1 = SPACE( 34 )
  720.     ENDCASE
  721.  
  722.     DO Tedit WITH WM_PAINT, EN_KILLFOC, 14  && EF_POS_1
  723.   ENDIF
  724. RETURN .t.
  725. *-- EOP: DLCRb
  726.  
  727.  
  728. FUNCTION Delimit
  729. PARAMETERS pcString
  730. *----------------------------------------------------------------------------
  731. * DESCRIPTION
  732. *
  733. * PARAMETERS
  734. *   pcString   = 
  735. *
  736. *----------------------------------------------------------------------------
  737.   IF ASC( pcString ) < 32
  738.     IF LEN( pcString ) = 1
  739.       lcResult = "CHR( " + ASC( pcString ) + " )"
  740.     ELSE
  741.       IF LEN( pcString ) = 0
  742.         lcResult = ""
  743.       ELSE
  744.         lcResult = "REPLICATE( CHR( " + ASC( pcString ) + " ), " + ;
  745.                     STR( LEN( pcString ) ) + " )"
  746.       ENDIF
  747.     ENDIF
  748.   ELSE
  749.     cLeft= '"'
  750.     cRight = '"'
  751.     IF AT( '"', pcString ) > 0
  752.       IF AT( "'", pcString ) > 0
  753.         cLeft = "["
  754.         cRight = "]"
  755.       ELSE
  756.         cLeft = "'"
  757.         cRight = "'"
  758.       ENDIF
  759.     ENDIF
  760.     lcResult = cLeft + pcString + cRight
  761.   ENDIF
  762.  
  763. RETURN( lcResult )
  764. *-- EOF: Delimit( pcString )
  765.  
  766.